const NwBuilder = require('nw-builder');
const path = require('path');
const fs = require('fs');
const rimraf = require('rimraf');

console.log('开始打包NW.js应用...');

// 构建目录
const buildDir = './build-' + Date.now(); // 使用时间戳创建唯一目录名

// 清理先前的构建
if (fs.existsSync(buildDir)) {
    console.log('正在清理先前的构建...');
    try {
        rimraf.sync(buildDir);
        console.log('清理完成');
    } catch (error) {
        console.warn('清理构建目录时出错，可能是文件被占用:', error);
        console.log('继续尝试构建...');
    }
}

// 创建构建目录
if (!fs.existsSync(buildDir)) {
    fs.mkdirSync(buildDir, { recursive: true });
}

// 确保package.json存在于dist目录中
const packageJson = require('./package.json');
fs.writeFileSync('./dist/package.json', JSON.stringify(packageJson, null, 2));

try {
    const nw = new NwBuilder({
        files: './dist/**/**', // 打包dist目录下的所有文件
        platforms: ['win64'], // 支持的平台，可选: win32, win64, osx32, osx64, linux32, linux64
        flavor: 'normal', // 使用普通版的NW.js
        buildDir: buildDir, // 输出目录
        cacheDir: './cache', // 缓存目录
        version: '0.50.2', // NW.js版本
    });

    // 使用更稳定的方式开始构建
    console.log('开始构建...');
    nw.build().then(function() {
        console.log('打包完成！');
        console.log('应用已生成在 ' + path.resolve(buildDir) + ' 目录下');
    }).catch(function(error) {
        console.error('打包过程中出现错误:', error);
    });
} catch (error) {
    console.error('初始化打包工具时出现错误:', error);
} 